package cn.iocoder.yudao.module.jikong.controller.app.order.vo;

import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.module.jikong.controller.admin.jkProduct.vo.JkProductRespVO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

@Schema(description = "管理后台 - 单据 Response VO")
@Data
@ExcelIgnoreUnannotated
public class JkOrderRespVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29351")
    @ExcelProperty("id")
    private Long id;

    @Schema(description = "单据编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("单据编号")
    private String orderNo;

    @Schema(description = "用户id", example = "3838")
    @ExcelProperty("用户id")
    private Long userId;

    @Schema(description = "用户登录账号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("用户登录账号")
    private String userPhone;

    @Schema(description = "用户类型", example = "1")
    @ExcelProperty(value = "用户类型", converter = DictConvert.class)
    @DictFormat("jk_user_type") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer userType;

    @Schema(description = "真实姓名", example = "芋艿")
    @ExcelProperty("真实姓名")
    private String realName;

    @Schema(description = "单据状态", example = "1")
    @ExcelProperty(value = "单据状态", converter = DictConvert.class)
    @DictFormat("jk_order_status") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer status;

    @Schema(description = "申请人地址")
    @ExcelProperty("申请人地址")
    private String address;

    @Schema(description = "申请联系人", example = "芋艿")
    @ExcelProperty("申请联系人")
    private String contactName;

    @Schema(description = "申请人联系手机")
    @ExcelProperty("申请人联系手机")
    private String contactPhone;

    @Schema(description = "样本领取时间")
    @ExcelProperty("样本领取时间")
    private LocalDateTime receiveTime;

    @Schema(description = "样本归还时间")
    @ExcelProperty("样本归还时间")
    private LocalDateTime rebackTime;

    @Schema(description = "样本领取方式", example = "2")
    @ExcelProperty("样本领取方式")
    private String receiveType;

    @Schema(description = "创建时间")
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "样品信息")
    private JkProductRespVO productData;

    private Long productId;


    //数据使用申请表
    @Schema(description = "研究背景与目的")
    private String applyBackground;
    @Schema(description = "详细分析计划")
    private String applyPlan;
    @Schema(description = "所需变量清单",example = "file1url,...,file3url")
    private String applyList;
    @Schema(description = "伦理审查证明")
    private String applyProof;
    @Schema(description = "样本申请规格id")
    private Integer productSize;
    @Schema(description = "样本申请备注")
    private String remark;
    @Schema(description = "样本申请数量")
    private Integer applyNum;

    //数据使用申请表
    @Schema(description = "数据使用协议")
    private String dataAgreement;
    @Schema(description = "知识产权协议")
    private String knowledgeAgreement;
    @Schema(description = "数据安全协议")
    private String dataSecurityAgreement;

    //专家审批字段
    @Schema(description = "科学价值")
    private String scientificValue;
    @Schema(description = "数据安全方案")
    private String dataSecurity;
    @Schema(description = "是否符合队列建设目标")
    private Integer targetOk;


}
